'use strict';
// mysql 插件 说明文档
// https://www.npmjs.com/package/mysql
var mysql = require('mysql');

/**信息维护 */
const db = {
	host: 'ip',
	user: 'root',
	password: '123456',
	database: 'testmysql',
	port: 3306
};

/**查询 */
const query = async (sql) => {
	return new Promise((resolve, reject) => {
		// 一、新建一个连接池
		var pool = mysql.createPool(db);
		// 二、连上连接池
		pool.getConnection(function(err, connection) {
			if (err) {
				//数据库未连接 无需释放
				reject(err);
			}
			// 三、使用sql语句操作
			connection.query(sql, function(err, results, fields) {
				if (err) {
					reject(err);
				} else {
					resolve(results);
				}
				// 四、释放连接池
				connection.release();
			});
		})
	})
}

/**事务（新增/更新/删除） */
const transaction = async (sqls) => {
	var pool = mysql.createPool(db);
	const conn = await pool.getConnection();
	await conn.beginTransaction();
	try {
		for (let i = 0, len = sqls.length; i < len; i++) {
			await conn.query(sqls[i]);
		}
		await conn.commit();
		return true;
	} catch (err) {
		await conn.rollback();
		return false;
	} finally {
		conn.release();
	}
}


module.exports = {
	query,
	transaction
}
